<?php

/**
 * Sunny软件公司欲为某玩具公司开发一套机器人控制程序，在该机器人控制程序中包含一些简单的英文控制指令，
 * 每一个指令对应一个表达式(expression)，该表达式可以是简单表达式也可以是复合表达式，每一个简单表达
 * 式由移动方向(direction)，移动方式(action)和移动距离(distance)三部分组成，其中移动方向包括上(up)、
 * 下(down)、左(left)、右(right)；移动方式包括移动(move)和快速移动(run)；移动距离为一个正整数。两个
 * 表达式之间可以通过与(and)连接，形成复合(composite)表达式。

       用户通过对图形化的设置界面进行操作可以创建一个机器人控制指令，机器人在收到指令后将按照指令的设置进
       行移动，例如输入控制指令：up move 5，则“向上移动5个单位”；输入控制指令：down  run 10 and left move 20，
       则“向下快速移动10个单位再向左移动20个单位”。
 */

abstract class AbstractNode
{
	public abstract function interpret($str);
}

/**
 * 终结表达式：数值
 */
class ValueNode extends AbstractNode
{
	public function interpret($str)
	{
		return intval($str);
	}
}

/**
 * 非终结表达式：符号
 */
class OperateNode extends AbstractNode
{
	private $_left;
	private $_right;
	
	public function __construct(AbstractNode $left, AbstractNode $right)
	{
		$this->_left = $left;
		$this->_right = $right;
	}
	
	public function interpret($str)
	{
		return $this->_left->interpret();
	}
}

class Interpreter
{
	public function execute($string)
	{
		
	}
}

class Client
{
	public static function mian()
	{
		$text = '1+2+3-4-1';
	}
}

Client::mian();